import request from './request'

/**
 * 获取竞赛列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getContestList(params) {
  return request({
    url: '/contests',
    method: 'get',
    params
  })
}

/**
 * 获取竞赛详情
 * @param {number} id 竞赛ID
 * @returns {Promise}
 */
export function getContestDetail(id) {
  return request({
    url: `/contests/${id}`,
    method: 'get'
  })
}

/**
 * 创建竞赛
 * @param {Object} data 竞赛信息
 * @returns {Promise}
 */
export function createContest(data) {
  return request({
    url: '/contest/create',
    method: 'post',
    data
  })
}

/**
 * 更新竞赛
 * @param {number} id 竞赛ID
 * @param {Object} data 竞赛信息
 * @returns {Promise}
 */
export function updateContest(id, data) {
  return request({
    url: `/contests/${id}`,
    method: 'put',
    data
  })
}

/**
 * 获取竞赛评论列表
 * @param {number} contestId 竞赛ID
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getContestComments(contestId, params) {
  return request({
    url: `/contests/${contestId}/comments`,
    method: 'get',
    params
  })
}

/**
 * 发表评论
 * @param {number} contestId 竞赛ID
 * @param {number} userId 用户ID
 * @param {Object} data 评论内容
 * @returns {Promise}
 */
export function addComment(contestId, userId, data) {
  return request({
    url: `/contests/${contestId}/comments`,
    method: 'post',
    params: { userId },
    data
  })
}

/**
 * 回复评论
 * @param {number} contestId 竞赛ID
 * @param {number} commentId 评论ID
 * @param {number} userId 用户ID
 * @param {Object} data 回复内容
 * @returns {Promise}
 */
export function replyComment(contestId, commentId, userId, data) {
  return request({
    url: `/contests/${contestId}/comments/${commentId}/replies`,
    method: 'post',
    params: { userId },
    data
  })
}

/**
 * 点赞评论
 * @param {number} commentId 评论ID
 * @returns {Promise}
 */
export function likeComment(commentId) {
  return request({
    url: `/comments/${commentId}/like`,
    method: 'post'
  })
}

/**
 * 获取竞赛排名
 * @param {number} contestId 竞赛ID
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getContestRanking(contestId, params) {
  return request({
    url: `/contests/${contestId}/ranking`,
    method: 'get',
    params
  })
}

/**
 * 开始竞赛
 * @param {number} id 竞赛ID
 * @returns {Promise}
 */
export function startContest(id) {
  return request({
    url: `/contests/${id}/start`,
    method: 'put'
  })
}

/**
 * 结束竞赛
 * @param {number} id 竞赛ID
 * @returns {Promise}
 */
export function endContest(id) {
  return request({
    url: `/contests/${id}/end`,
    method: 'put'
  })
}

/**
 * 审核竞赛
 * @param {number} id 竞赛ID
 * @param {number} status 审核状态 (1: 通过, 2: 拒绝)
 * @param {number} reviewerId 审核人ID
 * @returns {Promise}
 */
export function reviewContest(id, status, reviewerId) {
  return request({
    url: `/contests/${id}/review`,
    method: 'put',
    params: { status, reviewerId }
  })
}

/**
 * 检查用户是否已加入竞赛
 * @param {number} contestId 竞赛ID
 * @returns {Promise}
 */
export function checkUserJoined(contestId) {
  return request({
    url: `/contests/${contestId}/joined`,
    method: 'get'
  })
}

/**
 * 参与竞赛
 * @param {number} contestId 竞赛ID
 * @returns {Promise}
 */
export function joinContest(contestId) {
  return request({
    url: `/contests/${contestId}/join`,
    method: 'post'
  })
} 